Crate leopard_codec

source ·
Expand description

§Leopard codec

This is a Rust rewrite of a Go O(n*log n) implementation of Reed-Solomon codes, ported from the klauspost/reedsolomon, which is a port of the C++ library catid/leopard.

The original implementation is based on the paper:

S.-J. Lin, T. Y. Al-Naffouri, Y. S. Han, and W.-H. Chung,

“Novel Polynomial Basis with Fast Fourier Transform and Its Application to Reed-Solomon Erasure Codes”

IEEE Trans. on Information Theory, pp. 6284-6299, November, 2016.

§Features support

The leopard algorithm uses either 8-bit or 16-bit Galois fields with Cantor basis. The 8-bit implementation should be used with up to 256 total shards and 16-bit when more shards are needed.

  • Encoding parity shards using 8-bit leopard algorithm
  • Reconstructing shards using 8-bit leopard algorithm
  • Encoding parity shards using 16-bit leopard algorithm
  • Reconstructing shards using 16-bit leopard algorithm

Enums§

  • Possible errors that can happen when interacting with Leopard.

Constants§

  • Number of bits per element
  • Basis used for generating logarithm tables
  • Modulus for field operations
  • Finite field order: Number of elements in the field
  • LFSR Polynomial that generates the field elements

Functions§

  • Encode parity data into given shards.
  • Reconstructs original shards from the provided slice.

Type Aliases§